#ifndef BASEFIELD_H
#define BASEFIELD_H

#include <QString>
#include <QVariant>

class BaseField
{
public:
    BaseField();
    BaseField(const QString &name, const QString &description, int lenght);
    BaseField(const QString &name, int lenght);

    /*! Вовзаращет название поля */
    QString getName() const;
    /*! Устанавливает название поля */
    void setName(const QString &name);
    /*! Вовращает описание поля */
    QString getDescription() const;
    /*! Устанавливает описание поля */
    void setDescription(const QString &desc);
    /*! Воазращет длину поля */
    int getLenght();
    /*! Устанавливает длину поля */
    void setLenght(int lenght);

    virtual bool validate(const QVariant& value) const;

    QString getTypeName() const;

    QString toString() const;

    bool isNull();

protected:
    /*! Название поля */
    QString _name;
    /*! Описание поля */
    QString _description;
    /*! Длина поля */
    int _lenght;

    QString _typeName;
};

#endif // BASEFIELD_H
